- Hash-Verfahren
- Hash-Verfahren,ein Speicherungs- und Suchverfahren, bei dem Datensätze gestreut gespeichert und die Adressen von Datensätzen aus den zugehörigen Schlüsseln errechnet werden. Gestreute Speicherung von Datensätzen bedeutet, dass bezüglich irgendeiner Nummerierung der gespeicherten Datensätze nach den Schlüsseln Lücken auftreten. Solche sind in der Praxis nur mit größeren Umständen zu vermeiden, wenn die Menge der möglichen Schlüssel wesentlich größer als die Zahl der Datensätze ist. Eine direkte Adressierung der Datensätze nach den Schlüsseln hätte aber den Nachteil, dass unnötig viele Speicheradressen zur Verfügung gestellt werden müssen. Beim Hash-Verfahren werden nun die Datensätze einem Speicherbereich von passender Größe zugeteilt, und die Adressierung erfolgt indirekt, d. h. über eine Vorschrift, wie sich die Adresse aus den Schlüsseln berechnet. Diese Berechnungsvorschrift heißt Hash-Funktion. Sie wird so entworfen, dass die Adressen schnell zu berechnen sind und sich die Adressen gleichmäßig auf den Speicherbereich verteilen. Dabei ist erlaubt, dass verschiedene Schlüssel zur gleichen Adresse führen. In diesen Fällen (sog. Kollisionen) muss ein Ausweichplatz bereitgestellt und ein Adressverweis dorthin aufgebaut werden. Ein einfaches Verfahren zur Kollisionsvermeidung besteht darin, einen Wert so lange um einen festen Offset zu verschieben, bis ein freier Platz gefunden ist.Die Auflistung aller Funktionswerte (Funktion) einer Hash-Funktion, d. h. aller möglichen Adressierungen, heißt Hash-Tabelle. Sie stellt gewöhnlich eine im Umfang gegenüber der Zahl der Schlüssel beträchtlich reduzierte Menge an Werten dar. Als Beispiel werde ein fünfstelliger Schlüssel aus zwei Ziffern für eine Abteilungsnummer und drei Ziffern für die Angestelltennummer in der Abteilung betrachtet. Das Unternehmen habe die Abteilungen 01, 02 bis 10, die Angestelltennummern laufen bis ca. 50. Bei einfacher Direktumsetzung des Schlüssels auf Adresswerte bräuchte man dann eine fünfstellige Zahl von Adressen, um eine Größenordnung von 100 Datensätzen zu speichern. Als Hash-Funktion könnte man einfach »Angestelltennummer + (Abteilungsnummer - 1) × 50« wählen. Dann benötigt man nur 500 Adressen.Hash-Verfahren finden weitere Anwendung z. B. bei Schachprogrammen, um identische Stellungen, die durch verschiedene Zugfolgen (welche die Schlüssel bilden) erreicht werden, zu identifizieren, oder bei der Datenverschlüsselung.
Universal-Lexikon. 2012.